home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xarchie-2.0.9 / udp.c < prev    next >
C/C++ Source or Header  |  1995-06-18  |  2KB  |  84 lines

  1. /*
  2.  * udp - Check if UDP traffic is allowed on this host; we open port 1527 on
  3.  *       a system (default of cs.widener.edu), which is expecting it; the
  4.  *       date is output (e.g. very similar to the daytime service).  This
  5.  *       will conclusively tell us if UDP traffic on ports > 1000 is allowed.
  6.  *
  7.  *    It should print out the date if UDP traffic's not blocked on your
  8.  *    system.  If it just hangs, try these tests too:
  9.  *      a. run it with -d  (e.g. "udp -d"); that goes to the normal UDP port
  10.  *         to print the date.  If it works, then you can be sure that any
  11.  *         UDP traffic > port 1000 is blocked on your system.
  12.  *      b. if it hangs too, try "telnet 147.31.254.130 13" and see if
  13.  *         _that_ prints the date; if it doesn't, it's another problem (your
  14.  *         network can't get to me, e.g.).
  15.  *
  16.  * Compile by: cc -o udp udp.c
  17.  *
  18.  * Brendan Kehoe, brendan@cs.widener.edu, Oct 1991.
  19.  */
  20.  
  21. #include <stdio.h>
  22. #include <sys/types.h>
  23. #include <sys/socket.h>
  24. #include <netinet/in.h>
  25. #ifndef hpux
  26. # include <arpa/inet.h>
  27. #endif
  28.  
  29. #define    SIZE    2048
  30. #define    HOST    "147.31.254.130"    /* cs.widener.edu */
  31. #define PORT    1527
  32.  
  33. main (argc, argv)
  34.      int argc;
  35.      char **argv;
  36. {
  37.   int s, len;
  38.   struct sockaddr_in server, sa;
  39.   char buf[SIZE];
  40.  
  41.   if ((s = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
  42.     {
  43.       perror ("socket()");
  44.       exit (1);
  45.     }
  46.  
  47.   bzero ((char *) &sa, sizeof (sa));
  48.   sa.sin_family = AF_INET;
  49.   sa.sin_addr.s_addr = htonl (INADDR_ANY);
  50.   sa.sin_port = htons (0);
  51.  
  52.   if (bind (s, (struct sockaddr *) &sa, sizeof (sa)) < 0)
  53.     {
  54.       perror ("bind()");
  55.       exit (1);
  56.     }
  57.  
  58.   bzero ((char *) &server, sizeof (server));
  59.   server.sin_family = AF_INET;
  60.   server.sin_addr.s_addr = inet_addr (HOST);
  61.   if (argc > 1 && strcmp(*(argv + 1), "-d") == 0)
  62.     server.sin_port = htons ((unsigned short) 13);
  63.   else
  64.     server.sin_port = htons ((unsigned short) PORT);
  65.  
  66.   /* yoo hoo, we're here .. */
  67.   if (sendto (s, "\n", 1, 0, &server, sizeof (server)) < 0)
  68.     {
  69.       perror ("sendto()");
  70.       exit (1);
  71.     }
  72.  
  73.   /* slurp */
  74.   len = sizeof (server);
  75.   if (recvfrom (s, buf, sizeof (buf), 0, &server, &len) < 0)
  76.     {
  77.       perror ("recvfrom");
  78.       exit (1);
  79.     }
  80.  
  81.   printf ("%s", buf);
  82.   close (s);
  83. }
  84.